Amazon S3がAES256によるサーバサイド暗号化に対応
Amazon S3は暗号化されてない -> 暗号化対応
今までAmazon S3内に保存されるデータは暗号化されていませんでした。AWSは強力なセキュリティポリシーやアクセス制限によって情報を守ってきたわけです。しかし、ビジネスユーザの中には生データの保存を嫌います。そこで、Amazon S3はAES256による暗号化ストレージに対応しました。これによって、ユーザは自分で暗号化せずにAWSにその作業を任せることができるわけです。
Amazon S3にファイルをアップロードする
暗号化の手続きは簡単です。AWS Management Consoleからチェックボックスで制御できます。もちろん、APIでも指定が可能です。
暗号化されたファイルのプロパティを表示する
アップロードしたファイルの状況を確認しましょう。後から暗号化/非暗号化の指定ができます。
Bucketポリシーで暗号化する
API経由で暗号化する際には、PutObjectメソッドのBucketポリシーにて以下のようにs3:x-amz-server-side-encryptionを指定して暗号化します。
{ "Version":"2008-10-17", "Id":"PutObjPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":{ "AWS":"*" }, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::YourBucket/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"AES256" } } } ] }
JavaのSDKで暗号化する
JavaのSDKでも指定できます。ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION の部分です。
File file = new File(uploadFileName); PutObjectRequest putRequest = new PutObjectRequest( bucketName, keyName, file); // メタデータで指定 ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setServerSideEncryption( ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); putRequest.setMetadata(objectMetadata); PutObjectResult response = s3client.putObject(putRequest); System.out.println("Uploaded object encryption status is " + response.getServerSideEncryption());
まとめ
Amazon S3のサーバサイド暗号化対応によって、ビジネスユーザにとって今までよりもさらに魅力的なプラットフォームになりました。Amazon S3を使いこなしてストレージマエストロになりましょう!
参考情報
New - Amazon S3 Server Side Encryption for Data at Rest
Amazon Simple Storage Service Developer Guide -Using Server-Side Encryption-